#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"
#include "OLED.h"
#include "Encoder.h"
#include "Timer.h"
#include "math.h"
#include "Cal_yunsuan.h"
#include "Cal_dingjifen.h"
uint8_t KeyNum;
int16_t Encoder_value;
int a=0;//临时变量1，用来存储当前输的这个数字，该起什么名字(TAT)
//_a数加到Num1个位，输入下一个数字时，Num1乘10再加上新的_a
uint16_t Num1=0;//输入的第1个数
uint16_t Num2=0;//输入的第2个数


int flag=0;
double result=0;//结果


int main(void)
{
	OLED_Init();
	Encoder_Init();
	Key_Init();
	Timer_Init();
	
	OLED_ShowString(4, 1, "=");	//显示字符串
	
	
	while (1)
	{
		
		KeyNum=Key_GetNum();//KeyNum1234代表加减乘除,5代表选定数字
		Encoder_value+=Encoder_Get();//旋转编码器数
		a=Encoder_value%10;
		OLED_ShowSignedNum(1,2,a,1);
		OLED_ShowNum(2,2,TIM_GetCounter(TIM2),4);
		OLED_ShowSignedNum(1,6,Num1,7);
		OLED_ShowSignedNum(3,6,Num2,7);
		
		if(KeyNum==6)
		{
			if(flag==0)Num1=10*Num1+a;
			if(flag!=0)Num2=10*Num2+a;
		}
		else if(KeyNum==1)//
		{
			flag=1;OLED_ShowString(2,15,"+");
		}
		else if(KeyNum==2)//
		{
			flag=2;OLED_ShowString(2,15,"-");
		}
		else if(KeyNum==3)//
		{
			flag=3;OLED_ShowString(2,15,"*");
		}
		else if(KeyNum==4)//
		{
			flag=4;OLED_ShowString(2,15,"/");
		}
		else if(KeyNum==5)
		{
			switch(flag)
			{
			case 1:result = add(Num1, Num2);
			OLED_ShowSignedNum(4,6,result,7);flag=0;break;
			case 2:result=sub(Num1,Num2);
			OLED_ShowSignedNum(4,6,result,7);flag=0;break;
			case 3:result=mul(Num1,Num2);
			OLED_ShowSignedNum(4,6,result,7);flag=0;break;
			case 4:result=div(Num1,Num2);
int integerPart = (int)result; // 获取整数部分
int decimalPart = (int)((result - integerPart) * 100); // 获取小数部分（假设保留2位小数）
OLED_ShowNum(4,6, integerPart,4); // 显示整数部分
OLED_ShowString(4, 11, "."); // 显示小数点
OLED_ShowNum(4, 12, decimalPart,2); // 显示小数部分
				
			flag=0;break;
			
			
			}
		}		
}
	}
//定时中断
void TIM2_IRQHandler(void)
	{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
	{
		Key_Tick();
		}
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
	}

